home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / termv4.6 / extras / source / term-source.lha / PhonePanelUI.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-18  |  40.8 KB  |  1,843 lines

  1. /*
  2. **    PhonePanelUI.c
  3. **
  4. **    The phonebook user interface creation routines
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16.     // The gadget IDs are in there
  17.  
  18. #include "PhonePanel.h"
  19.  
  20. LayoutHandle *
  21. CreateEditorHandle(struct Window *Parent,struct List *PhoneList,ULONG Count,struct PhoneNode *Node,BOOL Activate,struct MsgPort *UserPort)
  22. {
  23.     STATIC LONG LabelTable1[] =
  24.     {
  25.         MSG_PHONEBOOK_SETTINGS_SERIAL_TXT,
  26.         MSG_PHONEBOOK_SETTINGS_MODEM_TXT,
  27.         MSG_PHONEBOOK_SETTINGS_SCREEN_TXT,
  28.         MSG_PHONEBOOK_SETTINGS_TERMINAL_TXT,
  29.         MSG_PHONEBOOK_SETTINGS_EMULATION_TXT,
  30.         MSG_PHONEBOOK_SETTINGS_CLIPBOARD_TXT,
  31.         MSG_PHONEBOOK_SETTINGS_CAPTURE_TXT,
  32.         MSG_PHONEBOOK_SETTINGS_COMMANDS_TXT,
  33.         -1
  34.     };
  35.  
  36.     STATIC LONG LabelTable2[] =
  37.     {
  38.         MSG_PHONEBOOK_SETTINGS_MISCELLANEOUS_TXT,
  39.         MSG_PHONEBOOK_SETTINGS_PATHS_TXT,
  40.         MSG_PHONEBOOK_SETTINGS_TRANSFER_TXT,
  41.         MSG_PHONEBOOK_SETTINGS_TRANSLATION_TXT,
  42.         MSG_PHONEBOOK_SETTINGS_FUNCTION_KEYS_TXT,
  43.         MSG_PHONEBOOK_SETTINGS_CURSOR_KEYS_TXT,
  44.         MSG_PHONEBOOK_SETTINGS_FAST_MACROS_TXT,
  45.         MSG_PHONEBOOK_SETTINGS_RATES_TXT,
  46.         -1
  47.     };
  48.  
  49.     LayoutHandle            *Handle;
  50.     BOOL                     IsFirst,IsLast,Disabled,RatesValid;
  51.     LONG                     LabelLen1,LabelLen2;
  52.     struct Configuration    *LocalConfig;
  53.     struct IBox                 Bounds;
  54.     LONG                     i,Len;
  55.  
  56.     if(Node)
  57.     {
  58.         IsFirst            = (Node -> Entry -> Count == -1 || Node -> Entry -> Count == 0);
  59.         IsLast            = (Node -> Entry -> Count == -1 || Node -> Entry -> Count == Count - 1);
  60.         Disabled        = FALSE;
  61.         LocalConfig        = Node -> Entry -> Config;
  62.         RatesValid        = (Node -> Entry -> TimeDateList . mlh_Head -> mln_Succ != NULL && !Node -> Entry -> Header -> NoRates);
  63.     }
  64.     else
  65.     {
  66.         IsFirst            = TRUE;
  67.         IsLast            = TRUE;
  68.         Disabled        = TRUE;
  69.         LocalConfig        = NULL;
  70.         RatesValid        = FALSE;
  71.     }
  72.  
  73.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  74.         LH_LocaleHook,&LocaleHook,
  75.     TAG_DONE))
  76.     {
  77.         for(i = LabelLen1 = 0 ; LabelTable1[i] != -1 ; i++)
  78.         {
  79.             Len = LT_LabelChars(Handle,LocaleString(LabelTable1[i]));
  80.  
  81.             if(Len > LabelLen1)
  82.                 LabelLen1 = Len;
  83.         }
  84.  
  85.         for(i = LabelLen2 = 0 ; LabelTable2[i] != -1 ; i++)
  86.         {
  87.             Len = LT_LabelChars(Handle,LocaleString(LabelTable2[i]));
  88.  
  89.             if(Len > LabelLen2)
  90.                 LabelLen2 = Len;
  91.         }
  92.  
  93.         LT_New(Handle,
  94.             LA_Type,    VERTICAL_KIND,
  95.         TAG_DONE);
  96.         {
  97.             LT_New(Handle,
  98.                 LA_Type,    HORIZONTAL_KIND,
  99.             TAG_DONE);
  100.             {
  101.                 LT_New(Handle,
  102.                     LA_Type,        VERTICAL_KIND,
  103.                     LA_LabelID,        MSG_PHONEBOOK_ENTRY_DATA_TXT,
  104.                 TAG_DONE);
  105.                 {
  106.                     LT_New(Handle,
  107.                         LA_Type,        STRING_KIND,
  108.                         LA_LabelID,        MSG_PHONEBOOK_SYSTEM_NAME_TXT,
  109.                         LA_Chars,        30,
  110.                         LA_ID,            GAD_SYSTEM_NAME,
  111.                         GTST_String,    Node ? Node -> Entry -> Header -> Name : (STRPTR)"",
  112.                         GTST_MaxChars,    39,
  113.                         GA_Disabled,    Disabled,
  114.                     TAG_DONE);
  115.  
  116.                     LT_New(Handle,
  117.                         LA_Type,        STRING_KIND,
  118.                         LA_LabelID,        MSG_PHONEBOOK_COMMENT_TXT,
  119.                         LA_ID,            GAD_COMMENT,
  120.                         GTST_String,    Node ? Node -> Entry -> Header -> Comment : (STRPTR)"",
  121.                         GTST_MaxChars,    99,
  122.                         GA_Disabled,    Disabled,
  123.                     TAG_DONE);
  124.  
  125.                     LT_New(Handle,
  126.                         LA_Type,        STRING_KIND,
  127.                         LA_LabelID,        MSG_PHONEBOOK_NUMBERS_TXT,
  128.                         LA_ID,            GAD_NUMBERS,
  129.                         GTST_String,    Node ? Node -> Entry -> Header -> Number : (STRPTR)"",
  130.                         GTST_MaxChars,    99,
  131.                         GA_Disabled,    Disabled,
  132.                     TAG_DONE);
  133.  
  134.                     LT_New(Handle,
  135.                         LA_Type,        CHECKBOX_KIND,
  136.                         LA_LabelID,        MSG_PHONEBOOK_QUICK_MENU_TXT,
  137.                         LA_ID,            GAD_QUICK_MENU,
  138.                         GTCB_Checked,    Node ? Node -> Entry -> Header -> QuickMenu : FALSE,
  139.                         GA_Disabled,    Disabled,
  140.                     TAG_DONE);
  141.  
  142.                     LT_New(Handle,
  143.                         LA_Type,        CHECKBOX_KIND,
  144.                         LA_LabelID,        MSG_PHONEPANEL_AUTO_DIAL_TXT,
  145.                         LA_ID,            GAD_AUTODIAL,
  146.                         GTCB_Checked,    Node ? Node -> Entry -> Header -> AutoDial : FALSE,
  147.                         GA_Disabled,    Disabled,
  148.                     TAG_DONE);
  149.  
  150.                     LT_New(Handle,
  151.                         LA_Type,        XBAR_KIND,
  152.                     TAG_DONE);
  153.  
  154.                     LT_New(Handle,
  155.                         LA_Type,        CHECKBOX_KIND,
  156.                         LA_LabelID,        MSG_HIDE_TXT,
  157.                         LA_ID,            GAD_HIDE_USERNAME_PASSWORD,
  158.                         GTCB_Checked,    TRUE,
  159.                     TAG_DONE);
  160.  
  161.                     LT_New(Handle,
  162.                         LA_Type,        STRING_KIND,
  163.                         LA_LabelID,        MSG_PHONEBOOK_USER_NAME_TXT,
  164.                         LA_ID,            GAD_USER_NAME,
  165.                         GTST_String,    "",
  166.                         GTST_MaxChars,    99,
  167.                         GA_Disabled,    TRUE,
  168.                     TAG_DONE);
  169.  
  170.                     LT_New(Handle,
  171.                         LA_Type,        STRING_KIND,
  172.                         LA_LabelID,        MSG_PHONEBOOK_LOGIN_PASSWORD_TXT,
  173.                         LA_ID,            GAD_USER_PASSWORD,
  174.                         LAST_LastGadget,TRUE,
  175.                         GTST_String,    "",
  176.                         GTST_MaxChars,    99,
  177.                         GA_Disabled,    TRUE,
  178.                     TAG_DONE);
  179.  
  180.                     LT_EndGroup(Handle);
  181.                 }
  182.  
  183.                 LT_New(Handle,
  184.                     LA_Type,        HORIZONTAL_KIND,
  185.                     LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TXT,
  186.                 TAG_DONE);
  187.                 {
  188.                     LT_New(Handle,
  189.                         LA_Type,        VERTICAL_KIND,
  190.                     TAG_DONE);
  191.                     {
  192.                         LT_New(Handle,
  193.                             LA_Type,        HORIZONTAL_KIND,
  194.                         TAG_DONE);
  195.                         {
  196.                             LT_New(Handle,
  197.                                 LA_Type,        CHECKBOX_KIND,
  198.                                 LA_ID,            GAD_SERIAL_STATE,
  199.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> SerialConfig != NULL) : FALSE,
  200.                                 GA_Disabled,    Disabled,
  201.                             TAG_DONE);
  202.  
  203.                             LT_New(Handle,
  204.                                 LA_Type,        BUTTON_KIND,
  205.                                 LA_Chars,        LabelLen1,
  206.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_SERIAL_TXT,
  207.                                 LA_ID,            GAD_SERIAL_EDIT,
  208. #ifndef ADAM_SZYMCZAK
  209.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> SerialConfig),
  210. #else
  211.                                 GA_Disabled,    Disabled,
  212. #endif
  213.                                 LABT_Smaller,    TRUE,
  214.                             TAG_DONE);
  215.  
  216.                             LT_EndGroup(Handle);
  217.                         }
  218.  
  219.                         LT_New(Handle,
  220.                             LA_Type,        HORIZONTAL_KIND,
  221.                         TAG_DONE);
  222.                         {
  223.                             LT_New(Handle,
  224.                                 LA_Type,        CHECKBOX_KIND,
  225.                                 LA_ID,            GAD_MODEM_STATE,
  226.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> ModemConfig != NULL) : FALSE,
  227.                                 GA_Disabled,    Disabled,
  228.                             TAG_DONE);
  229.  
  230.                             LT_New(Handle,
  231.                                 LA_Type,        BUTTON_KIND,
  232.                                 LA_Chars,        LabelLen1,
  233.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_MODEM_TXT,
  234.                                 LA_ID,            GAD_MODEM_EDIT,
  235. #ifndef ADAM_SZYMCZAK
  236.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> ModemConfig),
  237. #else
  238.                                 GA_Disabled,    Disabled,
  239. #endif
  240.                                 LABT_Smaller,    TRUE,
  241.                             TAG_DONE);
  242.  
  243.                             LT_EndGroup(Handle);
  244.                         }
  245.  
  246.                         LT_New(Handle,
  247.                             LA_Type,        HORIZONTAL_KIND,
  248.                         TAG_DONE);
  249.                         {
  250.                             LT_New(Handle,
  251.                                 LA_Type,        CHECKBOX_KIND,
  252.                                 LA_ID,            GAD_SCREEN_STATE,
  253.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> ScreenConfig != NULL) : FALSE,
  254.                                 GA_Disabled,    Disabled,
  255.                             TAG_DONE);
  256.  
  257.                             LT_New(Handle,
  258.                                 LA_Type,        BUTTON_KIND,
  259.                                 LA_Chars,        LabelLen1,
  260.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_SCREEN_TXT,
  261.                                 LA_ID,            GAD_SCREEN_EDIT,
  262. #ifndef ADAM_SZYMCZAK
  263.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> ScreenConfig),
  264. #else
  265.                                 GA_Disabled,    Disabled,
  266. #endif
  267.                                 LABT_Smaller,    TRUE,
  268.                             TAG_DONE);
  269.  
  270.                             LT_EndGroup(Handle);
  271.                         }
  272.  
  273.                         LT_New(Handle,
  274.                             LA_Type,        HORIZONTAL_KIND,
  275.                         TAG_DONE);
  276.                         {
  277.                             LT_New(Handle,
  278.                                 LA_Type,        CHECKBOX_KIND,
  279.                                 LA_ID,            GAD_TERMINAL_STATE,
  280.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> TerminalConfig != NULL) : FALSE,
  281.                                 GA_Disabled,    Disabled,
  282.                             TAG_DONE);
  283.  
  284.                             LT_New(Handle,
  285.                                 LA_Type,        BUTTON_KIND,
  286.                                 LA_Chars,        LabelLen1,
  287.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TERMINAL_TXT,
  288.                                 LA_ID,            GAD_TERMINAL_EDIT,
  289. #ifndef ADAM_SZYMCZAK
  290.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> TerminalConfig),
  291. #else
  292.                                 GA_Disabled,    Disabled,
  293. #endif
  294.                                 LABT_Smaller,    TRUE,
  295.                             TAG_DONE);
  296.  
  297.                             LT_EndGroup(Handle);
  298.                         }
  299.  
  300.                         LT_New(Handle,
  301.                             LA_Type,        HORIZONTAL_KIND,
  302.                         TAG_DONE);
  303.                         {
  304.                             LT_New(Handle,
  305.                                 LA_Type,        CHECKBOX_KIND,
  306.                                 LA_ID,            GAD_EMULATION_STATE,
  307.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> EmulationConfig != NULL) : FALSE,
  308.                                 GA_Disabled,    Disabled,
  309.                             TAG_DONE);
  310.  
  311.                             LT_New(Handle,
  312.                                 LA_Type,        BUTTON_KIND,
  313.                                 LA_Chars,        LabelLen1,
  314.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_EMULATION_TXT,
  315.                                 LA_ID,            GAD_EMULATION_EDIT,
  316. #ifndef ADAM_SZYMCZAK
  317.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> EmulationConfig),
  318. #else
  319.                                 GA_Disabled,    Disabled,
  320. #endif
  321.                                 LABT_Smaller,    TRUE,
  322.                             TAG_DONE);
  323.  
  324.                             LT_EndGroup(Handle);
  325.                         }
  326.  
  327.                         LT_New(Handle,
  328.                             LA_Type,        HORIZONTAL_KIND,
  329.                         TAG_DONE);
  330.                         {
  331.                             LT_New(Handle,
  332.                                 LA_Type,        CHECKBOX_KIND,
  333.                                 LA_ID,            GAD_CLIPBOARD_STATE,
  334.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> ClipConfig != NULL) : FALSE,
  335.                                 GA_Disabled,    Disabled,
  336.                             TAG_DONE);
  337.  
  338.                             LT_New(Handle,
  339.                                 LA_Type,        BUTTON_KIND,
  340.                                 LA_Chars,        LabelLen1,
  341.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_CLIPBOARD_TXT,
  342.                                 LA_ID,            GAD_CLIPBOARD_EDIT,
  343. #ifndef ADAM_SZYMCZAK
  344.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> ClipConfig),
  345. #else
  346.                                 GA_Disabled,    Disabled,
  347. #endif
  348.                                 LABT_Smaller,    TRUE,
  349.                             TAG_DONE);
  350.  
  351.                             LT_EndGroup(Handle);
  352.                         }
  353.  
  354.                         LT_New(Handle,
  355.                             LA_Type,        HORIZONTAL_KIND,
  356.                         TAG_DONE);
  357.                         {
  358.                             LT_New(Handle,
  359.                                 LA_Type,        CHECKBOX_KIND,
  360.                                 LA_ID,            GAD_CAPTURE_STATE,
  361.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> CaptureConfig != NULL) : FALSE,
  362.                                 GA_Disabled,    Disabled,
  363.                             TAG_DONE);
  364.  
  365.                             LT_New(Handle,
  366.                                 LA_Type,        BUTTON_KIND,
  367.                                 LA_Chars,        LabelLen1,
  368.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_CAPTURE_TXT,
  369.                                 LA_ID,            GAD_CAPTURE_EDIT,
  370. #ifndef ADAM_SZYMCZAK
  371.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> CaptureConfig),
  372. #else
  373.                                 GA_Disabled,    Disabled,
  374. #endif
  375.                                 LABT_Smaller,    TRUE,
  376.                             TAG_DONE);
  377.  
  378.                             LT_EndGroup(Handle);
  379.                         }
  380.  
  381.                         LT_New(Handle,
  382.                             LA_Type,        HORIZONTAL_KIND,
  383.                         TAG_DONE);
  384.                         {
  385.                             LT_New(Handle,
  386.                                 LA_Type,        CHECKBOX_KIND,
  387.                                 LA_ID,            GAD_COMMAND_STATE,
  388.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> CommandConfig != NULL) : FALSE,
  389.                                 GA_Disabled,    Disabled,
  390.                             TAG_DONE);
  391.  
  392.                             LT_New(Handle,
  393.                                 LA_Type,        BUTTON_KIND,
  394.                                 LA_Chars,        LabelLen1,
  395.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_COMMANDS_TXT,
  396.                                 LA_ID,            GAD_COMMAND_EDIT,
  397. #ifndef ADAM_SZYMCZAK
  398.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> CommandConfig),
  399. #else
  400.                                 GA_Disabled,    Disabled,
  401. #endif
  402.                                 LABT_Smaller,    TRUE,
  403.                             TAG_DONE);
  404.  
  405.                             LT_EndGroup(Handle);
  406.                         }
  407.  
  408.                         LT_EndGroup(Handle);
  409.                     }
  410.  
  411.                     LT_New(Handle,
  412.                         LA_Type,        VERTICAL_KIND,
  413.                     TAG_DONE);
  414.                     {
  415.                         LT_New(Handle,
  416.                             LA_Type,        HORIZONTAL_KIND,
  417.                         TAG_DONE);
  418.                         {
  419.                             LT_New(Handle,
  420.                                 LA_Type,        CHECKBOX_KIND,
  421.                                 LA_ID,            GAD_MISC_STATE,
  422.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> MiscConfig != NULL) : FALSE,
  423.                                 GA_Disabled,    Disabled,
  424.                             TAG_DONE);
  425.  
  426.                             LT_New(Handle,
  427.                                 LA_Type,        BUTTON_KIND,
  428.                                 LA_Chars,        LabelLen2,
  429.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_MISCELLANEOUS_TXT,
  430.                                 LA_ID,            GAD_MISC_EDIT,
  431. #ifndef ADAM_SZYMCZAK
  432.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> MiscConfig),
  433. #else
  434.                                 GA_Disabled,    Disabled,
  435. #endif
  436.                                 LABT_Smaller,    TRUE,
  437.                             TAG_DONE);
  438.  
  439.                             LT_EndGroup(Handle);
  440.                         }
  441.  
  442.                         LT_New(Handle,
  443.                             LA_Type,        HORIZONTAL_KIND,
  444.                         TAG_DONE);
  445.                         {
  446.                             LT_New(Handle,
  447.                                 LA_Type,        CHECKBOX_KIND,
  448.                                 LA_ID,            GAD_PATH_STATE,
  449.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> PathConfig != NULL) : FALSE,
  450.                                 GA_Disabled,    Disabled,
  451.                             TAG_DONE);
  452.  
  453.                             LT_New(Handle,
  454.                                 LA_Type,        BUTTON_KIND,
  455.                                 LA_Chars,        LabelLen2,
  456.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_PATHS_TXT,
  457.                                 LA_ID,            GAD_PATH_EDIT,
  458. #ifndef ADAM_SZYMCZAK
  459.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> PathConfig),
  460. #else
  461.                                 GA_Disabled,    Disabled,
  462. #endif
  463.                                 LABT_Smaller,    TRUE,
  464.                             TAG_DONE);
  465.  
  466.                             LT_EndGroup(Handle);
  467.                         }
  468.  
  469.                         LT_New(Handle,
  470.                             LA_Type,        HORIZONTAL_KIND,
  471.                         TAG_DONE);
  472.                         {
  473.                             LT_New(Handle,
  474.                                 LA_Type,        CHECKBOX_KIND,
  475.                                 LA_ID,            GAD_TRANSFER_STATE,
  476.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> TransferConfig != NULL) : FALSE,
  477.                                 GA_Disabled,    Disabled,
  478.                             TAG_DONE);
  479.  
  480.                             LT_New(Handle,
  481.                                 LA_Type,        BUTTON_KIND,
  482.                                 LA_Chars,        LabelLen2,
  483.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TRANSFER_TXT,
  484.                                 LA_ID,            GAD_TRANSFER_EDIT,
  485. #ifndef ADAM_SZYMCZAK
  486.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> TransferConfig),
  487. #else
  488.                                 GA_Disabled,    Disabled,
  489. #endif
  490.                                 LABT_Smaller,    TRUE,
  491.                             TAG_DONE);
  492.  
  493.                             LT_EndGroup(Handle);
  494.                         }
  495.  
  496.                         LT_New(Handle,
  497.                             LA_Type,        HORIZONTAL_KIND,
  498.                         TAG_DONE);
  499.                         {
  500.                             LT_New(Handle,
  501.                                 LA_Type,        CHECKBOX_KIND,
  502.                                 LA_ID,            GAD_TRANSLATION_STATE,
  503.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> TranslationFileName != NULL) : FALSE,
  504.                                 GA_Disabled,    Disabled,
  505.                             TAG_DONE);
  506.  
  507.                             LT_New(Handle,
  508.                                 LA_Type,        BUTTON_KIND,
  509.                                 LA_Chars,        LabelLen2,
  510.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_TRANSLATION_TXT,
  511.                                 LA_ID,            GAD_TRANSLATION_EDIT,
  512. #ifndef ADAM_SZYMCZAK
  513.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> TranslationFileName),
  514. #else
  515.                                 GA_Disabled,    Disabled,
  516. #endif
  517.                                 LABT_Smaller,    TRUE,
  518.                             TAG_DONE);
  519.  
  520.                             LT_EndGroup(Handle);
  521.                         }
  522.  
  523.                         LT_New(Handle,
  524.                             LA_Type,        HORIZONTAL_KIND,
  525.                         TAG_DONE);
  526.                         {
  527.                             LT_New(Handle,
  528.                                 LA_Type,        CHECKBOX_KIND,
  529.                                 LA_ID,            GAD_MACRO_STATE,
  530.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> MacroFileName != NULL) : FALSE,
  531.                                 GA_Disabled,    Disabled,
  532.                             TAG_DONE);
  533.  
  534.                             LT_New(Handle,
  535.                                 LA_Type,        BUTTON_KIND,
  536.                                 LA_Chars,        LabelLen2,
  537.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_FUNCTION_KEYS_TXT,
  538.                                 LA_ID,            GAD_MACRO_EDIT,
  539. #ifndef ADAM_SZYMCZAK
  540.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> MacroFileName),
  541. #else
  542.                                 GA_Disabled,    Disabled,
  543. #endif
  544.                                 LABT_Smaller,    TRUE,
  545.                             TAG_DONE);
  546.  
  547.                             LT_EndGroup(Handle);
  548.                         }
  549.  
  550.                         LT_New(Handle,
  551.                             LA_Type,        HORIZONTAL_KIND,
  552.                         TAG_DONE);
  553.                         {
  554.                             LT_New(Handle,
  555.                                 LA_Type,        CHECKBOX_KIND,
  556.                                 LA_ID,            GAD_CURSOR_STATE,
  557.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> CursorFileName != NULL) : FALSE,
  558.                                 GA_Disabled,    Disabled,
  559.                             TAG_DONE);
  560.  
  561.                             LT_New(Handle,
  562.                                 LA_Type,        BUTTON_KIND,
  563.                                 LA_Chars,        LabelLen2,
  564.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_CURSOR_KEYS_TXT,
  565.                                 LA_ID,            GAD_CURSOR_EDIT,
  566. #ifndef ADAM_SZYMCZAK
  567.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> CursorFileName),
  568. #else
  569.                                 GA_Disabled,    Disabled,
  570. #endif
  571.                                 LABT_Smaller,    TRUE,
  572.                             TAG_DONE);
  573.  
  574.                             LT_EndGroup(Handle);
  575.                         }
  576.  
  577.                         LT_New(Handle,
  578.                             LA_Type,        HORIZONTAL_KIND,
  579.                         TAG_DONE);
  580.                         {
  581.                             LT_New(Handle,
  582.                                 LA_Type,        CHECKBOX_KIND,
  583.                                 LA_ID,            GAD_FASTMACRO_STATE,
  584.                                 GTCB_Checked,    LocalConfig ? (LocalConfig -> FastMacroFileName != NULL) : FALSE,
  585.                                 GA_Disabled,    Disabled,
  586.                             TAG_DONE);
  587.  
  588.                             LT_New(Handle,
  589.                                 LA_Type,        BUTTON_KIND,
  590.                                 LA_Chars,        LabelLen2,
  591.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_FAST_MACROS_TXT,
  592.                                 LA_ID,            GAD_FASTMACRO_EDIT,
  593. #ifndef ADAM_SZYMCZAK
  594.                                 GA_Disabled,    Disabled || (LocalConfig && !LocalConfig -> FastMacroFileName),
  595. #else
  596.                                 GA_Disabled,    Disabled,
  597. #endif
  598.                                 LABT_Smaller,    TRUE,
  599.                             TAG_DONE);
  600.  
  601.                             LT_EndGroup(Handle);
  602.                         }
  603.  
  604.                         LT_New(Handle,
  605.                             LA_Type,        HORIZONTAL_KIND,
  606.                         TAG_DONE);
  607.                         {
  608.                             LT_New(Handle,
  609.                                 LA_Type,        CHECKBOX_KIND,
  610.                                 LA_ID,            GAD_RATE_STATE,
  611.                                 GTCB_Checked,    RatesValid,
  612.                                 GA_Disabled,    Disabled,
  613.                             TAG_DONE);
  614.  
  615.                             LT_New(Handle,
  616.                                 LA_Type,        BUTTON_KIND,
  617.                                 LA_Chars,        LabelLen2,
  618.                                 LA_LabelID,        MSG_PHONEBOOK_SETTINGS_RATES_TXT,
  619.                                 LA_ID,            GAD_RATE_EDIT,
  620. #ifndef ADAM_SZYMCZAK
  621.                                 GA_Disabled,    Disabled || !RatesValid,
  622. #else
  623.                                 GA_Disabled,    Disabled,
  624. #endif
  625.                                 LABT_Smaller,    TRUE,
  626.                             TAG_DONE);
  627.  
  628.                             LT_EndGroup(Handle);
  629.                         }
  630.  
  631.                         LT_EndGroup(Handle);
  632.                     }
  633.  
  634.                     LT_EndGroup(Handle);
  635.                 }
  636.  
  637.                 LT_EndGroup(Handle);
  638.             }
  639.  
  640.             LT_New(Handle,
  641.                 LA_Type,        VERTICAL_KIND,
  642.             TAG_DONE);
  643.             {
  644.                 LT_New(Handle,
  645.                     LA_Type,        XBAR_KIND,
  646.                     LAXB_FullSize,    TRUE,
  647.                 TAG_DONE);
  648.  
  649.                 LT_EndGroup(Handle);
  650.             }
  651.  
  652.             LT_New(Handle,
  653.                 LA_Type,        HORIZONTAL_KIND,
  654.                 LAGR_SameSize,    TRUE,
  655.                 LAGR_Spread,    TRUE,
  656.             TAG_DONE);
  657.             {
  658.                 LT_New(Handle,
  659.                     LA_Type,            TAPEDECK_KIND,
  660.                     LATD_ButtonType,    TDBT_PREVIOUS,
  661.                     LATD_Smaller,        TRUE,
  662.                     LA_ID,                GAD_FIRST_ENTRY,
  663.                     GA_Disabled,        Disabled || IsFirst,
  664.                 TAG_DONE);
  665.  
  666.                 LT_New(Handle,
  667.                     LA_Type,            TAPEDECK_KIND,
  668.                     LATD_ButtonType,    TDBT_REWIND,
  669.                     LATD_Smaller,        TRUE,
  670.                     LA_ID,                GAD_PREVIOUS_ENTRY,
  671.                     GA_Disabled,        Disabled || IsFirst,
  672.                 TAG_DONE);
  673.  
  674.                 LT_New(Handle,
  675.                     LA_Type,            TAPEDECK_KIND,
  676.                     LATD_ButtonType,    TDBT_PLAY,
  677.                     LATD_Smaller,        TRUE,
  678.                     LA_ID,                GAD_NEXT_ENTRY,
  679.                     GA_Disabled,        Disabled || IsLast,
  680.                 TAG_DONE);
  681.  
  682.                 LT_New(Handle,
  683.                     LA_Type,            TAPEDECK_KIND,
  684.                     LATD_ButtonType,    TDBT_NEXT,
  685.                     LATD_Smaller,        TRUE,
  686.                     LA_ID,                GAD_LAST_ENTRY,
  687.                     GA_Disabled,        Disabled || IsLast,
  688.                 TAG_DONE);
  689.  
  690.                 LT_New(Handle,
  691.                     LA_Type,            BUTTON_KIND,
  692.                     LA_LabelID,            MSG_GLOBAL_CLOSE_TXT,
  693.                     LABT_EscKey,        TRUE,
  694.                     LABT_ExtraFat,        TRUE,
  695.                     LA_ID,                GAD_CLOSE,
  696.                 TAG_DONE);
  697.  
  698.                 LT_EndGroup(Handle);
  699.             }
  700.  
  701.             LT_EndGroup(Handle);
  702.         }
  703.  
  704.         if(Parent == Window)
  705.         {
  706.             Bounds . Left    = WindowLeft    + Window -> LeftEdge;
  707.             Bounds . Top    = WindowTop        + Window -> TopEdge;
  708.             Bounds . Width    = WindowWidth;
  709.             Bounds . Height    = WindowHeight;
  710.         }
  711.  
  712.         if(LT_Build(Handle,
  713.             LAWN_TitleID,        MSG_PHONEBOOK_EDIT_TXT,
  714.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  715.             LAWN_UserPort,        UserPort,
  716.             LAWN_HelpHook,        &GuideHook,
  717.             WA_DepthGadget,     TRUE,
  718.             WA_DragBar,         TRUE,
  719.             WA_RMBTrap,         TRUE,
  720.             WA_Activate,        Activate,
  721.             WA_CloseGadget,     TRUE,
  722.             WA_SimpleRefresh,    TRUE,
  723.  
  724.             Parent == Window ? LAWN_Bounds : TAG_IGNORE,&Bounds,
  725.             Parent == Window ? TAG_IGNORE : LAWN_Parent,Parent,
  726.         TAG_DONE))
  727.         {
  728.             if(Activate)
  729.             {
  730.                 LT_ShowWindow(Handle,TRUE);
  731.  
  732.                 if(!Disabled)
  733.                     LT_Activate(Handle,GAD_SYSTEM_NAME);
  734.             }
  735.  
  736.             return(Handle);
  737.         }
  738.         else
  739.             LT_DeleteHandle(Handle);
  740.     }
  741.  
  742.     return(NULL);
  743. }
  744.  
  745.     /* PhoneListViewRender():
  746.      *
  747.      *    This callback routine is responsible for rendering
  748.      *    the single listview entries.
  749.      */
  750.  
  751. STATIC ULONG __saveds __asm
  752. PhoneListViewRender(REG(a0) struct Hook *Hook,REG(a1) struct LVDrawMsg *Msg,REG(a2) struct PhoneNode *Node)
  753. {
  754.         /* We only know how to redraw lines. */
  755.  
  756.     if(Msg -> lvdm_MethodID == LV_DRAW)
  757.     {
  758.         struct RastPort    *RPort    = Msg -> lvdm_RastPort;
  759.         LONG             Count    = Node -> Entry -> Count + 1,
  760.                          Left    = Msg -> lvdm_Bounds . MinX,
  761.                          Top    = Msg -> lvdm_Bounds . MinY,
  762.                          Width    = Msg -> lvdm_Bounds . MaxX - Msg -> lvdm_Bounds . MinX + 1,
  763.                          Height    = Msg -> lvdm_Bounds . MaxY - Msg -> lvdm_Bounds . MinY + 1,
  764.                          FgPen,BgPen,
  765.                          Template,
  766.                          Len,LabelLen;
  767.         UBYTE             String[80],Num[8];
  768.         UWORD            *Pens;
  769.  
  770.         Pens = Msg -> lvdm_DrawInfo -> dri_Pens;
  771.  
  772.             /* Determine the rendering pens. */
  773.  
  774.         if(Msg->lvdm_State == LVR_SELECTED)
  775.         {
  776.             FgPen = FILLTEXTPEN;
  777.             BgPen = FILLPEN;
  778.         }
  779.         else
  780.         {
  781.             FgPen = TEXTPEN;
  782.             BgPen = BACKGROUNDPEN;
  783.         }
  784.  
  785.         FgPen = Pens[FgPen];
  786.         BgPen = Pens[BgPen];
  787.  
  788.         if(Count > 0)
  789.         {
  790.             if(Pens[HIGHLIGHTTEXTPEN] != BgPen)
  791.                 FgPen = Pens[HIGHLIGHTTEXTPEN];
  792.         }
  793.  
  794.             /* Set the rendering pens. */
  795.  
  796.         SetABPenDrMd(RPort,BgPen,BgPen,JAM2);
  797.  
  798.         RectFill(RPort,Left,Top,Left + 1,Top + Height - 1);
  799.  
  800.         Left    += 2;
  801.         Width    -= 2;
  802.  
  803.             /* Determine maximum index text length. */
  804.  
  805.         Template = 3 * ((ULONG)Hook -> h_Data) + TextLength(RPort," - ",3);
  806.  
  807.             /* Get the vanilla name. */
  808.  
  809.         strcpy(String,&Node -> VanillaNode . ln_Name[6]);
  810.  
  811.             /* Has this entry been selected? */
  812.  
  813.         if(Count > 0)
  814.         {
  815.             LONG Delta;
  816.  
  817.                 /* Set up the header. */
  818.  
  819.             SPrintf(Num,"%3ld - ",Count);
  820.  
  821.                 /* Determine header length. */
  822.  
  823.             Len = TextLength(RPort,Num,6);
  824.  
  825.                 /* Fill the space to precede the header. */
  826.  
  827.             if((Delta = Template - Len) > 0)
  828.             {
  829.                 SetAPen(RPort,BgPen);
  830.                 FillBox(RPort,Left,Top,Delta,Height);
  831.             }
  832.  
  833.                 /* Render the header, right-justified. */
  834.  
  835.             SetAPen(RPort,FgPen);
  836.  
  837.             PlaceText(RPort,Left + Delta,Top,Num,6);
  838.         }
  839.         else
  840.         {
  841.                 /* Fill the blank space to precede the vanilla name. */
  842.  
  843.             SetAPen(RPort,BgPen);
  844.             FillBox(RPort,Left,Top,Template,Height);
  845.             SetAPen(RPort,FgPen);
  846.         }
  847.  
  848.             /* Adjust width and area left edge. */
  849.  
  850.         Left    += Template;
  851.         Width    -= Template;
  852.  
  853.             /* Determine length of vanilla name. */
  854.  
  855.         LabelLen = strlen(String);
  856.  
  857.             /* Try to make it fit. */
  858.  
  859.         while(LabelLen > 0 && (Len = TextLength(RPort,String,LabelLen)) > Width)
  860.             LabelLen--;
  861.  
  862.             /* Print the vanilla name if possible. */
  863.  
  864.         if(LabelLen)
  865.         {
  866.             PlaceText(RPort,Left,Top,String,LabelLen);
  867.  
  868.             Left    += Len;
  869.             Width    -= Len;
  870.         }
  871.  
  872.             /* Fill the area to follow the vanilla name. */
  873.  
  874.         if(Width > 0)
  875.         {
  876.             SetAPen(RPort,BgPen);
  877.             FillBox(RPort,Left,Top,Width,Height);
  878.         }
  879.  
  880.             /* If the item happens to be disabled, draw the cross-hatch
  881.              * pattern across it.
  882.              */
  883.  
  884.         ListViewStateFill(Msg);
  885.  
  886.         return(LVCB_OK);
  887.     }
  888.     else
  889.         return(LVCB_UNKNOWN);
  890. }
  891.  
  892. LayoutHandle *
  893. CreateManagerHandle(struct Window *Parent,struct List *PhoneList,ULONG Count,ULONG *Grouper,STRPTR *Labels,struct MsgPort *UserPort,STRPTR WindowTitle)
  894. {
  895.     STATIC WORD LabelTable[] =
  896.     {
  897.         MSG_PHONEBOOK_TAG_ALL_TXT,
  898.         MSG_PHONEBOOK_TOGGLE_ALL_TXT,
  899.         MSG_PHONEBOOK_UNTAG_ALL_TXT,
  900.         MSG_PHONEBOOK_TAG_BY_PATTERN_TXT,
  901.  
  902.         MSG_PHONEBOOK_EDIT_ENTRY_TXT,
  903.         MSG_PHONEBOOK_COPY_ENTRY_TXT,
  904.         MSG_PHONEBOOK_ADD_ENTRY_TXT,
  905.         MSG_PHONEBOOK_MAKE_GROUP_TXT,
  906.  
  907.         MSG_PHONEBOOK_DIAL_TXT,
  908.         MSG_PHONEBOOK_USE_ENTRY_TXT,
  909.         MSG_PHONEBOOK_DELETE_ENTRY_TXT,
  910.         MSG_PHONEBOOK_SPLIT_GROUP_TXT,
  911.  
  912.         -1
  913.     };
  914.  
  915.     LayoutHandle *Handle;
  916.  
  917.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  918.         LH_LocaleHook,&LocaleHook,
  919.     TAG_DONE))
  920.     {
  921.         STATIC struct Hook ListViewHook = { {NULL},(HOOKFUNC)PhoneListViewRender };
  922.  
  923.         LONG        i,Max,Size;
  924.         UBYTE        SmallString[2];
  925.         struct IBox    Bounds;
  926.         LONG        Len,LabelLen;
  927.  
  928.         for(i = LabelLen = 0 ; i < NumElements(LabelTable) ; i++)
  929.         {
  930.             Len = LT_LabelChars(Handle,LocaleString(LabelTable[i]));
  931.  
  932.             if(Len > LabelLen)
  933.                 LabelLen = Len;
  934.         }
  935.  
  936.         SmallString[1]    = 0;
  937.         Max                = 0;
  938.  
  939.         for(i = '0' ; i <= '9' ; i++)
  940.         {
  941.             SmallString[0] = i;
  942.  
  943.             if((Size = LT_LabelWidth(Handle,SmallString)) > Max)
  944.                 Max = Size;
  945.         }
  946.  
  947.         ListViewHook . h_Data = (APTR)Max;
  948.  
  949.         LT_New(Handle,
  950.             LA_Type,    VERTICAL_KIND,
  951.         TAG_DONE);
  952.         {
  953.             LT_New(Handle,
  954.                 LA_Type,        HORIZONTAL_KIND,
  955.                 LAGR_NoIndent,    TRUE,
  956.             TAG_DONE);
  957.             {
  958.                 LT_New(Handle,
  959.                     LA_Type,    VERTICAL_KIND,
  960.                 TAG_DONE);
  961.                 {
  962.                     LONG NumEntries;
  963.                     LONG NumColumns;
  964.                     BOOL HasEntries;
  965.  
  966.                     if(PhoneList && PhoneList -> lh_Head -> ln_Succ)
  967.                     {
  968.                         struct Node    *Node;
  969.                         LONG         Len;
  970.  
  971.                         HasEntries = TRUE;
  972.  
  973.                         for(Node = PhoneList -> lh_Head, NumEntries = NumColumns = 0 ; Node -> ln_Succ ; Node = Node -> ln_Succ)
  974.                         {
  975.                             NumEntries++;
  976.  
  977.                             Len = strlen(&Node -> ln_Name[6]);
  978.  
  979.                             if(Len > NumColumns)
  980.                                 NumColumns = Len;
  981.                         }
  982.  
  983.                         if(NumEntries < 6)
  984.                             NumEntries = 6;
  985.                         else
  986.                         {
  987.                             if(NumEntries > 46)
  988.                                 NumEntries = 46;
  989.                         }
  990.  
  991.                         if(NumColumns < 46)
  992.                             NumColumns = 46;
  993.                     }
  994.                     else
  995.                     {
  996.                         HasEntries = FALSE;
  997.                         NumEntries = 6;
  998.                         NumColumns = 46;
  999.                     }
  1000.  
  1001.                     LT_New(Handle,
  1002.                         LA_Type,        CycleType,
  1003.                         LACY_TabKey,    TRUE,
  1004.                         GTCY_Labels,    Labels,
  1005.                         LA_ID,            GAD_GROUPID,
  1006.                         LA_ULONG,        Grouper,
  1007.                     TAG_DONE);
  1008.  
  1009.                     LT_New(Handle,
  1010.                         LA_Type,        LISTVIEW_KIND,
  1011.                         LA_ID,            GAD_NAMELIST,
  1012.                         LALV_Columns,    46,
  1013.                         LALV_Lines,     6,
  1014.                         LALV_CursorKey, TRUE,
  1015.                         LALV_ResizeX,    TRUE,
  1016.                         LALV_ResizeY,    TRUE,
  1017.                         LALV_MaxGrowX,    NumColumns,
  1018.                         LALV_MaxGrowY,    NumEntries,
  1019.                         LALV_Link,        NIL_LINK,
  1020.                         GTLV_CallBack,    &ListViewHook,
  1021.                         GTLV_MaxPen,    GetListMaxPen(Handle -> DrawInfo -> dri_Pens),
  1022.                         GTLV_Labels,    PhoneList,
  1023.  
  1024.                         Kick30 ? TAG_IGNORE :    LALV_TextAttr,    ~0,
  1025.                         Kick30 ? GA_Disabled :    TAG_IGNORE,        !HasEntries,
  1026.                     TAG_DONE);
  1027.  
  1028.                     LT_New(Handle,
  1029.                         LA_Type,            BOX_KIND,
  1030.                         LA_ID,                GAD_COMMENTLINE,
  1031.                         LABX_Rows,            1,
  1032.                         LA_Chars,            50,
  1033.                         LABX_DrawBox,        TRUE,
  1034.                         LABX_ReserveSpace,    TRUE,
  1035.                     TAG_DONE);
  1036.  
  1037.                     LT_New(Handle,
  1038.                         LA_Type,        HORIZONTAL_KIND,
  1039.                         LAGR_Spread,    TRUE,
  1040.                         LAGR_SameSize,    TRUE,
  1041.                         LAGR_Spread,    TRUE,
  1042.                     TAG_DONE);
  1043.                     {
  1044.                         LT_New(Handle,
  1045.                             LA_Type,            TAPEDECK_KIND,
  1046.                             LATD_ButtonType,    TDBT_PREVIOUS,
  1047.                             LATD_Smaller,        TRUE,
  1048.                             LA_Chars,            LabelLen,
  1049.                             LA_ID,                GAD_MOVE_FIRST,
  1050.                             GA_Disabled,        TRUE,
  1051.                         TAG_DONE);
  1052.  
  1053.                         LT_New(Handle,
  1054.                             LA_Type,            TAPEDECK_KIND,
  1055.                             LATD_ButtonType,    TDBT_REWIND,
  1056.                             LATD_Smaller,        TRUE,
  1057.                             LA_ID,                GAD_MOVE_UP,
  1058.                             GA_Disabled,        TRUE,
  1059.                         TAG_DONE);
  1060.  
  1061.                         LT_New(Handle,
  1062.                             LA_Type,            TAPEDECK_KIND,
  1063.                             LATD_ButtonType,    TDBT_PLAY,
  1064.                             LATD_Smaller,        TRUE,
  1065.                             LA_ID,                GAD_MOVE_DOWN,
  1066.                             GA_Disabled,        TRUE,
  1067.                         TAG_DONE);
  1068.  
  1069.                         LT_New(Handle,
  1070.                             LA_Type,            TAPEDECK_KIND,
  1071.                             LATD_ButtonType,    TDBT_NEXT,
  1072.                             LATD_Smaller,        TRUE,
  1073.                             LA_ID,                GAD_MOVE_LAST,
  1074.                             GA_Disabled,        TRUE,
  1075.                         TAG_DONE);
  1076.  
  1077.                         LT_EndGroup(Handle);
  1078.                     }
  1079.  
  1080.                     LT_New(Handle,
  1081.                         LA_Type,        HORIZONTAL_KIND,
  1082.                         LAGR_NoIndent,    TRUE,
  1083.                         LAGR_SameSize,    TRUE,
  1084.                         LAGR_Spread,    TRUE,
  1085.                     TAG_DONE);
  1086.                     {
  1087.                         LT_New(Handle,
  1088.                             LA_Type,        BUTTON_KIND,
  1089.                             LA_LabelID,        MSG_PHONEBOOK_TAG_ALL_TXT,
  1090.                             LA_ID,            GAD_SELECT_ALL,
  1091.                             GA_Disabled,    !NumPhoneEntries || Count == NumPhoneEntries,
  1092.                             LA_Chars,        LabelLen,
  1093.                         TAG_DONE);
  1094.  
  1095.                         LT_New(Handle,
  1096.                             LA_Type,        BUTTON_KIND,
  1097.                             LA_LabelID,        MSG_PHONEBOOK_TOGGLE_ALL_TXT,
  1098.                             LA_ID,            GAD_TOGGLE_ALL,
  1099.                             GA_Disabled,    !NumPhoneEntries,
  1100.                         TAG_DONE);
  1101.  
  1102.                         LT_New(Handle,
  1103.                             LA_Type,        BUTTON_KIND,
  1104.                             LA_LabelID,        MSG_PHONEBOOK_UNTAG_ALL_TXT,
  1105.                             LA_ID,            GAD_CLEAR_ALL,
  1106.                             GA_Disabled,    !Count,
  1107.                         TAG_DONE);
  1108.  
  1109.                         LT_New(Handle,
  1110.                             LA_Type,        BUTTON_KIND,
  1111.                             LA_LabelID,        MSG_PHONEBOOK_TAG_BY_PATTERN_TXT,
  1112.                             LA_ID,            GAD_PATTERN,
  1113.                             GA_Disabled,    !NumPhoneEntries,
  1114.                         TAG_DONE);
  1115.  
  1116.                         LT_EndGroup(Handle);
  1117.                     }
  1118.  
  1119.                     LT_New(Handle,
  1120.                         LA_Type,        XBAR_KIND,
  1121.                     TAG_DONE);
  1122.  
  1123.                     LT_New(Handle,
  1124.                         LA_Type,        HORIZONTAL_KIND,
  1125.                         LAGR_NoIndent,    TRUE,
  1126.                         LAGR_SameSize,    TRUE,
  1127.                         LAGR_Spread,    TRUE,
  1128.                     TAG_DONE);
  1129.                     {
  1130.                         LT_New(Handle,
  1131.                             LA_Type,        BUTTON_KIND,
  1132.                             LA_LabelID,        MSG_PHONEBOOK_EDIT_ENTRY_TXT,
  1133.                             LA_Chars,        LabelLen,
  1134.                             LA_ID,            GAD_EDIT,
  1135.                             GA_Disabled,    TRUE,
  1136.                             LABT_DefaultCorrection,    TRUE,
  1137.                         TAG_DONE);
  1138.  
  1139.                         LT_New(Handle,
  1140.                             LA_Type,        BUTTON_KIND,
  1141.                             LA_LabelID,        MSG_PHONEBOOK_COPY_ENTRY_TXT,
  1142.                             LA_ID,            GAD_COPY,
  1143.                             GA_Disabled,    TRUE,
  1144.                         TAG_DONE);
  1145.  
  1146.                         LT_New(Handle,
  1147.                             LA_Type,        BUTTON_KIND,
  1148.                             LA_LabelID,        MSG_PHONEBOOK_ADD_ENTRY_TXT,
  1149.                             LA_ID,            GAD_ADD,
  1150.                         TAG_DONE);
  1151.  
  1152.                         LT_New(Handle,
  1153.                             LA_Type,        BUTTON_KIND,
  1154.                             LA_LabelID,        MSG_PHONEBOOK_MAKE_GROUP_TXT,
  1155.                             LA_ID,            GAD_MAKE_GROUP,
  1156.                             GA_Disabled,    !Count,
  1157.                         TAG_DONE);
  1158.  
  1159.                         LT_EndGroup(Handle);
  1160.                     }
  1161.  
  1162.                     LT_New(Handle,
  1163.                         LA_Type,        HORIZONTAL_KIND,
  1164.                         LAGR_NoIndent,    TRUE,
  1165.                         LAGR_SameSize,    TRUE,
  1166.                         LAGR_Spread,    TRUE,
  1167.                     TAG_DONE);
  1168.                     {
  1169.                         LT_New(Handle,
  1170.                             LA_Type,        BUTTON_KIND,
  1171.                             LA_LabelID,        MSG_PHONEBOOK_DIAL_TXT,
  1172.                             LA_ID,            GAD_DIAL,
  1173.                             GA_Disabled,    !Count || (Online && !Config -> MiscConfig -> ProtectiveMode),
  1174.                             LABT_ReturnKey, TRUE,
  1175.                             LA_Chars,        LabelLen,
  1176.                         TAG_DONE);
  1177.  
  1178.                         LT_New(Handle,
  1179.                             LA_Type,        BUTTON_KIND,
  1180.                             LA_LabelID,        MSG_PHONEBOOK_USE_ENTRY_TXT,
  1181.                             LA_ID,            GAD_USE,
  1182.                             GA_Disabled,    TRUE,
  1183.                         TAG_DONE);
  1184.  
  1185.                         LT_New(Handle,
  1186.                             LA_Type,        BUTTON_KIND,
  1187.                             LA_LabelID,        MSG_PHONEBOOK_DELETE_ENTRY_TXT,
  1188.                             LA_ID,            GAD_DELETE,
  1189.                             GA_Disabled,    TRUE,
  1190.                         TAG_DONE);
  1191.  
  1192.                         LT_New(Handle,
  1193.                             LA_Type,        BUTTON_KIND,
  1194.                             LA_LabelID,        MSG_PHONEBOOK_SPLIT_GROUP_TXT,
  1195.                             LA_ID,            GAD_SPLIT_GROUP,
  1196.                             GA_Disabled,    *Grouper == 0,
  1197.                         TAG_DONE);
  1198.  
  1199.                         LT_EndGroup(Handle);
  1200.                     }
  1201.  
  1202.                     LT_EndGroup(Handle);
  1203.                 }
  1204.  
  1205.                 LT_New(Handle,
  1206.                     LA_Type,        VERTICAL_KIND,
  1207.                 TAG_DONE);
  1208.                 {
  1209.                     LT_New(Handle,
  1210.                         LA_Type,    YBAR_KIND,
  1211.                     TAG_DONE);
  1212.  
  1213.                     LT_EndGroup(Handle);
  1214.                 }
  1215.  
  1216.                 LT_New(Handle,
  1217.                     LA_Type,        VERTICAL_KIND,
  1218.                     LAGR_SameSize,    TRUE,
  1219.                 TAG_DONE);
  1220.                 {
  1221.                     LT_New(Handle,
  1222.                         LA_Type,        CHECKBOX_KIND,
  1223.                         LA_LabelID,        MSG_PHONEPANEL_AUTO_DIAL_TXT,
  1224.                         LA_ID,            GAD_MAIN_AUTODIAL,
  1225.                         LA_BYTE,        &PhonebookAutoDial,
  1226.                         LA_LabelPlace,    PLACE_RIGHT,
  1227.                     TAG_DONE);
  1228.  
  1229.                     LT_New(Handle,
  1230.                         LA_Type,        CHECKBOX_KIND,
  1231.                         LA_LabelID,        MSG_PHONEPANEL_EXIT_WHEN_FINISHED_TXT,
  1232.                         LA_ID,            GAD_MAIN_EXIT_WHEN_FINISHED,
  1233.                         LA_BYTE,        &PhonebookAutoExit,
  1234.                         GA_Disabled,    !PhonebookAutoDial,
  1235.                         LA_LabelPlace,    PLACE_RIGHT,
  1236.                     TAG_DONE);
  1237.  
  1238.                     LT_New(Handle,
  1239.                         LA_Type,        XBAR_KIND,
  1240.                     TAG_DONE);
  1241.  
  1242.                     LT_New(Handle,
  1243.                         LA_Type,        BUTTON_KIND,
  1244.                         LA_LabelID,        MSG_PHONEBOOK_PASSWORD_TXT,
  1245.                         LA_ID,            GAD_PASSWORD,
  1246.                     TAG_DONE);
  1247.  
  1248.                     LT_New(Handle,
  1249.                         LA_Type,        XBAR_KIND,
  1250.                     TAG_DONE);
  1251.  
  1252.                     LT_New(Handle,
  1253.                         LA_Type,        BUTTON_KIND,
  1254.                         LA_LabelID,        MSG_PHONEBOOK_LOAD_TXT,
  1255.                         LA_ID,            GAD_LOAD,
  1256.                         GA_Disabled,    ChosenEntry != NULL,
  1257.                     TAG_DONE);
  1258.  
  1259.                     LT_New(Handle,
  1260.                         LA_Type,        BUTTON_KIND,
  1261.                         LA_LabelID,        MSG_PHONEBOOK_MERGE_TXT,
  1262.                         LA_ID,            GAD_MERGE,
  1263.                         GA_Disabled,    !NumPhoneEntries,
  1264.                     TAG_DONE);
  1265.  
  1266.                     LT_New(Handle,
  1267.                         LA_Type,        BUTTON_KIND,
  1268.                         LA_LabelID,        MSG_PHONEBOOK_SAVE_TXT,
  1269.                         LA_ID,            GAD_SAVE,
  1270.                         GA_Disabled,    !NumPhoneEntries,
  1271.                     TAG_DONE);
  1272.  
  1273.                     LT_New(Handle,
  1274.                         LA_Type,        BUTTON_KIND,
  1275.                         LA_LabelID,        MSG_PHONEBOOK_PRINT_TXT,
  1276.                         LA_ID,            GAD_PRINT,
  1277.                         GA_Disabled,    !NumPhoneEntries,
  1278.                     TAG_DONE);
  1279.  
  1280.                     LT_New(Handle,
  1281.                         LA_Type,        BUTTON_KIND,
  1282.                         LA_LabelID,        MSG_PHONEBOOK_SORT_TXT,
  1283.                         LA_ID,            GAD_SORT,
  1284.                         GA_Disabled,    !NumPhoneEntries,
  1285.                     TAG_DONE);
  1286.  
  1287.                     LT_New(Handle,
  1288.                         LA_Type,        XBAR_KIND,
  1289.                     TAG_DONE);
  1290.  
  1291.                     LT_New(Handle,
  1292.                         LA_Type,        BUTTON_KIND,
  1293.                         LA_LabelID,        MSG_PHONEBOOK_COPY_CONFIG_TXT,
  1294.                         LA_ID,            GAD_COPY_CONFIG,
  1295.                         GA_Disabled,    !NumPhoneEntries,
  1296.                     TAG_DONE);
  1297.  
  1298.                     LT_EndGroup(Handle);
  1299.                 }
  1300.  
  1301.                 LT_EndGroup(Handle);
  1302.             }
  1303.  
  1304.             LT_EndGroup(Handle);
  1305.         }
  1306.  
  1307.         if(Parent == Window)
  1308.         {
  1309.             Bounds . Left    = WindowLeft    + Window -> LeftEdge;
  1310.             Bounds . Top    = WindowTop        + Window -> TopEdge;
  1311.             Bounds . Width    = WindowWidth;
  1312.             Bounds . Height    = WindowHeight;
  1313.         }
  1314.  
  1315.         if(LT_Build(Handle,
  1316.             LAWN_TitleText,        WindowTitle ? WindowTitle : LocaleString(MSG_PHONEPANEL_PHONEBOOK_TXT),
  1317.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  1318.             LAWN_Bounds,        &Bounds,
  1319.             LAWN_HelpHook,        &GuideHook,
  1320.             LAWN_Show,            TRUE,
  1321.             LAWN_UserPort,        UserPort,
  1322.             WA_DepthGadget,        TRUE,
  1323.             WA_DragBar,            TRUE,
  1324.             WA_RMBTrap,         TRUE,
  1325.             WA_Activate,        TRUE,
  1326.             WA_CloseGadget,     TRUE,
  1327. //            WA_SimpleRefresh,    TRUE,
  1328.             WA_NoCareRefresh,    TRUE,
  1329.  
  1330.             Parent == Window ? LAWN_Bounds : TAG_IGNORE,&Bounds,
  1331.             Parent == Window ? TAG_IGNORE : LAWN_Parent,Parent,
  1332.         TAG_DONE))
  1333.             return(Handle);
  1334.         else
  1335.             LT_DeleteHandle(Handle);
  1336.     }
  1337.  
  1338.     return(NULL);
  1339. }
  1340.  
  1341. LayoutHandle *
  1342. CreateSelectorHandle(struct Window *Parent,STRPTR Name,STRPTR Number,STRPTR Comment,BYTE *Mode)
  1343. {
  1344.     LayoutHandle *Handle;
  1345.  
  1346.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  1347.         LH_LocaleHook,&LocaleHook,
  1348.     TAG_DONE))
  1349.     {
  1350.         LT_New(Handle,
  1351.             LA_Type,    VERTICAL_KIND,
  1352.         TAG_DONE);
  1353.         {
  1354.             LT_New(Handle,
  1355.                 LA_Type,        VERTICAL_KIND,
  1356.             TAG_DONE);
  1357.             {
  1358.                 LT_New(Handle,
  1359.                     LA_Type,        CYCLE_KIND,
  1360.                     LA_ID,            GAD_SELECT_MODE,
  1361.                     LA_Chars,        40,
  1362.                     LA_BYTE,        Mode,
  1363.                     LACY_TabKey,    TRUE,
  1364.                     LACY_FirstLabel,MSG_PHONEBOOK_TAG_ENTRIES1_TXT,
  1365.                     LACY_LastLabel,    MSG_PHONEBOOK_TAG_ENTRIES2_TXT,
  1366.                 TAG_DONE);
  1367.  
  1368.                 LT_New(Handle,
  1369.                     LA_Type,        STRING_KIND,
  1370.                     LA_ID,            GAD_SELECT_NAME,
  1371.                     LA_LabelID,        MSG_PHONEBOOK_SYSTEM_NAME_TXT,
  1372.                     LA_STRPTR,        Name,
  1373.                     GTST_MaxChars,    63,
  1374.                 TAG_DONE);
  1375.  
  1376.                 LT_New(Handle,
  1377.                     LA_Type,        STRING_KIND,
  1378.                     LA_ID,            GAD_SELECT_COMMENT,
  1379.                     LA_LabelID,        MSG_PHONEBOOK_COMMENT_TXT,
  1380.                     LA_STRPTR,        Comment,
  1381.                     LAST_LastGadget,TRUE,
  1382.                     GTST_MaxChars,    63,
  1383.                 TAG_DONE);
  1384.  
  1385.                 LT_New(Handle,
  1386.                     LA_Type,        STRING_KIND,
  1387.                     LA_ID,            GAD_SELECT_NUMBER,
  1388.                     LA_LabelID,        MSG_PHONEBOOK_NUMBERS_TXT,
  1389.                     LA_STRPTR,        Number,
  1390.                     GTST_MaxChars,    63,
  1391.                 TAG_DONE);
  1392.  
  1393.                 LT_New(Handle,
  1394.                     LA_Type,        XBAR_KIND,
  1395.                     LAXB_FullWidth,    TRUE,
  1396.                 TAG_DONE);
  1397.  
  1398.                 LT_EndGroup(Handle);
  1399.             }
  1400.  
  1401.             LT_New(Handle,
  1402.                 LA_Type,        HORIZONTAL_KIND,
  1403.                 LAGR_SameSize,    TRUE,
  1404.                 LAGR_Spread,    TRUE,
  1405.             TAG_DONE);
  1406.             {
  1407.                 LT_New(Handle,
  1408.                     LA_Type,            BUTTON_KIND,
  1409.                     LA_ID,                GAD_SELECT_APPLY,
  1410.                     LA_LabelID,            MSG_PHONEBOOK_APPLY_TXT,
  1411.                     LABT_ExtraFat,        TRUE,
  1412.                     LABT_ReturnKey,        TRUE,
  1413.                 TAG_DONE);
  1414.  
  1415.                 LT_New(Handle,
  1416.                     LA_Type,            BUTTON_KIND,
  1417.                     LA_ID,                GAD_SELECT_APPLY_AND_CLOSE,
  1418.                     LA_LabelID,            MSG_PHONEBOOK_APPLY_AND_CLOSE_TXT,
  1419.                 TAG_DONE);
  1420.  
  1421.                 LT_New(Handle,
  1422.                     LA_Type,            BUTTON_KIND,
  1423.                     LA_ID,                GAD_SELECT_CLOSE,
  1424.                     LA_LabelID,            MSG_GLOBAL_CLOSE_TXT,
  1425.                     LABT_EscKey,        TRUE,
  1426.                 TAG_DONE);
  1427.  
  1428.                 LT_EndGroup(Handle);
  1429.             }
  1430.  
  1431.             LT_EndGroup(Handle);
  1432.         }
  1433.  
  1434.         if(LT_Build(Handle,
  1435.             LAWN_TitleID,        MSG_PHONEBOOK_EDIT_PATTERNS_TXT,
  1436.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  1437.             LAWN_HelpHook,        &GuideHook,
  1438.             LAWN_Show,            TRUE,
  1439.             LAWN_Parent,        Parent,
  1440.             LAWN_UserPort,        Parent -> UserPort,
  1441.             WA_DepthGadget,        TRUE,
  1442.             WA_DragBar,            TRUE,
  1443.             WA_RMBTrap,         TRUE,
  1444.             WA_Activate,        TRUE,
  1445.             WA_CloseGadget,     TRUE,
  1446.             WA_SimpleRefresh,    TRUE,
  1447.         TAG_DONE))
  1448.             return(Handle);
  1449.         else
  1450.             LT_DeleteHandle(Handle);
  1451.     }
  1452.  
  1453.     return(NULL);
  1454. }
  1455.  
  1456. LayoutHandle *
  1457. CreateGroupHandle(struct Window *Parent,STRPTR *Labels,ULONG Group)
  1458. {
  1459.     LayoutHandle *Handle;
  1460.  
  1461.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  1462.         LH_LocaleHook,&LocaleHook,
  1463.     TAG_DONE))
  1464.     {
  1465.         LT_New(Handle,
  1466.             LA_Type,    VERTICAL_KIND,
  1467.         TAG_DONE);
  1468.         {
  1469.             LT_New(Handle,
  1470.                 LA_Type,        VERTICAL_KIND,
  1471.             TAG_DONE);
  1472.             {
  1473.                 LT_New(Handle,
  1474.                     LA_Type,        CycleType,
  1475.                     LA_ID,            GAD_GROUP_LIST,
  1476.                     GTCY_Labels,    Labels,
  1477.                     GTCY_Active,    Group,
  1478.                     LACY_TabKey,    TRUE,
  1479.                     LA_LabelID,        MSG_PHONEBOOK_PICK_GROUP_TXT,
  1480.                 TAG_DONE);
  1481.  
  1482.                 LT_New(Handle,
  1483.                     LA_Type,        STRING_KIND,
  1484.                     LA_ID,            GAD_GROUP_NAME,
  1485.                     LA_LabelID,        MSG_PHONEBOOK_OR_ENTER_NAME_TXT,
  1486.                     LA_Chars,        30,
  1487.                     GTST_MaxChars,    39,
  1488.                     GTST_String,    Labels[Group],
  1489.                 TAG_DONE);
  1490.  
  1491.                 LT_New(Handle,
  1492.                     LA_Type,        XBAR_KIND,
  1493.                     LAXB_FullWidth,    TRUE,
  1494.                 TAG_DONE);
  1495.  
  1496.                 LT_EndGroup(Handle);
  1497.             }
  1498.  
  1499.             LT_New(Handle,
  1500.                 LA_Type,        HORIZONTAL_KIND,
  1501.                 LAGR_SameSize,    TRUE,
  1502.                 LAGR_Spread,    TRUE,
  1503.             TAG_DONE);
  1504.             {
  1505.                 LT_New(Handle,
  1506.                     LA_Type,            BUTTON_KIND,
  1507.                     LA_ID,                GAD_GROUP_OK,
  1508.                     LA_LabelID,            MSG_GLOBAL_USE_GAD,
  1509.                     LABT_ExtraFat,        TRUE,
  1510.                     LABT_ReturnKey,        TRUE,
  1511.                 TAG_DONE);
  1512.  
  1513.                 LT_New(Handle,
  1514.                     LA_Type,            BUTTON_KIND,
  1515.                     LA_ID,                GAD_GROUP_CANCEL,
  1516.                     LA_LabelID,            MSG_GLOBAL_CANCEL_GAD,
  1517.                     LABT_EscKey,        TRUE,
  1518.                 TAG_DONE);
  1519.  
  1520.                 LT_EndGroup(Handle);
  1521.             }
  1522.  
  1523.             LT_EndGroup(Handle);
  1524.         }
  1525.  
  1526.         if(LT_Build(Handle,
  1527.             LAWN_TitleID,        MSG_PHONEBOOK_SELECT_GROUP_TXT,
  1528.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  1529.             LAWN_HelpHook,        &GuideHook,
  1530.             LAWN_Show,            TRUE,
  1531.             LAWN_Parent,        Parent,
  1532.             LAWN_UserPort,        Parent -> UserPort,
  1533.             WA_DepthGadget,        TRUE,
  1534.             WA_DragBar,            TRUE,
  1535.             WA_RMBTrap,         TRUE,
  1536.             WA_Activate,        TRUE,
  1537.             WA_CloseGadget,     TRUE,
  1538.             WA_SimpleRefresh,    TRUE,
  1539.         TAG_DONE))
  1540.         {
  1541.             LT_Activate(Handle,GAD_GROUP_NAME);
  1542.  
  1543.             return(Handle);
  1544.         }
  1545.         else
  1546.             LT_DeleteHandle(Handle);
  1547.     }
  1548.  
  1549.     return(NULL);
  1550. }
  1551.  
  1552. LayoutHandle *
  1553. CreateSortHandle(struct Window *Parent,WORD *Criteria,BOOLEAN *Reverse)
  1554. {
  1555.     LayoutHandle *Handle;
  1556.  
  1557.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  1558.         LH_LocaleHook,&LocaleHook,
  1559.     TAG_DONE))
  1560.     {
  1561.         LT_New(Handle,
  1562.             LA_Type,    HORIZONTAL_KIND,
  1563.         TAG_DONE);
  1564.         {
  1565.             LT_New(Handle,
  1566.                 LA_Type,        VERTICAL_KIND,
  1567.             TAG_DONE);
  1568.             {
  1569.                 LT_New(Handle,
  1570.                     LA_Type,        VERTICAL_KIND,
  1571.                 TAG_DONE);
  1572.                 {
  1573.                     LT_New(Handle,
  1574.                         LA_Type,        MX_KIND,
  1575.                         LA_ID,            GAD_SORT_CRITERIA,
  1576.                         LAMX_FirstLabel,MSG_PHONEBOOK_SORTORDER1_TXT,
  1577.                         LAMX_LastLabel,    MSG_PHONEBOOK_SORTORDER4_TXT,
  1578.                         LAMX_TabKey,    TRUE,
  1579.                         LA_WORD,        Criteria,
  1580.                         LA_LabelID,        MSG_SORT_CRITERIA_TXT,
  1581.                     TAG_DONE);
  1582.  
  1583.                     LT_New(Handle,
  1584.                         LA_Type,        XBAR_KIND,
  1585.                     TAG_DONE);
  1586.  
  1587.                     LT_EndGroup(Handle);
  1588.                 }
  1589.  
  1590.                 LT_New(Handle,
  1591.                     LA_Type,        VERTICAL_KIND,
  1592.                 TAG_DONE);
  1593.                 {
  1594.                     LT_New(Handle,
  1595.                         LA_Type,        CHECKBOX_KIND,
  1596.                         LA_ID,            GAD_SORT_REVERSE,
  1597.                         LA_LabelID,        MSG_REVERSE_ORDER_TXT,
  1598.                         LA_BOOL,        Reverse,
  1599.                     TAG_DONE);
  1600.  
  1601.                     LT_EndGroup(Handle);
  1602.                 }
  1603.  
  1604.                 LT_EndGroup(Handle);
  1605.             }
  1606.  
  1607.             LT_New(Handle,
  1608.                 LA_Type,        VERTICAL_KIND,
  1609.             TAG_DONE);
  1610.             {
  1611.                 LT_New(Handle,
  1612.                     LA_Type,        YBAR_KIND,
  1613.                 TAG_DONE);
  1614.  
  1615.                 LT_EndGroup(Handle);
  1616.             }
  1617.  
  1618.             LT_New(Handle,
  1619.                 LA_Type,        VERTICAL_KIND,
  1620.                 LAGR_SameSize,    TRUE,
  1621.                 LAGR_Spread,    TRUE,
  1622.             TAG_DONE);
  1623.             {
  1624.                 LT_New(Handle,
  1625.                     LA_Type,            BUTTON_KIND,
  1626.                     LA_ID,                GAD_SORT_IT,
  1627.                     LA_LabelID,            MSG_JUST_SORT_TXT,
  1628.                     LABT_ReturnKey,        TRUE,
  1629.                 TAG_DONE);
  1630.  
  1631.                 LT_New(Handle,
  1632.                     LA_Type,            BUTTON_KIND,
  1633.                     LA_ID,                GAD_SORT_AND_CLOSE,
  1634.                     LA_LabelID,            MSG_SORT_AND_CLOSE_TXT,
  1635.                 TAG_DONE);
  1636.  
  1637.                 LT_New(Handle,
  1638.                     LA_Type,            BUTTON_KIND,
  1639.                     LA_ID,                GAD_SORT_JUST_CLOSE,
  1640.                     LA_LabelID,            MSG_GLOBAL_CLOSE_TXT,
  1641.                     LABT_EscKey,        TRUE,
  1642.                 TAG_DONE);
  1643.  
  1644.                 LT_EndGroup(Handle);
  1645.             }
  1646.  
  1647.             LT_EndGroup(Handle);
  1648.         }
  1649.  
  1650.         if(LT_Build(Handle,
  1651.             LAWN_TitleID,        MSG_SORT_PHONEBOOK_TXT,
  1652.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  1653.             LAWN_HelpHook,        &GuideHook,
  1654.             LAWN_Show,            TRUE,
  1655.             LAWN_Parent,        Parent,
  1656.             LAWN_UserPort,        Parent -> UserPort,
  1657.             WA_DepthGadget,        TRUE,
  1658.             WA_DragBar,            TRUE,
  1659.             WA_RMBTrap,         TRUE,
  1660.             WA_Activate,        TRUE,
  1661.             WA_CloseGadget,     TRUE,
  1662.             WA_SimpleRefresh,    TRUE,
  1663.         TAG_DONE))
  1664.             return(Handle);
  1665.         else
  1666.             LT_DeleteHandle(Handle);
  1667.     }
  1668.  
  1669.     return(NULL);
  1670. }
  1671.  
  1672. VOID
  1673. UpdatePasswordWindow(LayoutHandle *Handle)
  1674. {
  1675.     UBYTE    Password1[30],
  1676.             Password2[30];
  1677.     BOOL    Disabled;
  1678.  
  1679.     memset(Password1,0,sizeof(Password1));
  1680.     memset(Password2,0,sizeof(Password2));
  1681.  
  1682.     strcpy(Password1,LT_GetString(Handle,GAD_NEW_PASSWORD));
  1683.     strcpy(Password2,LT_GetString(Handle,GAD_REPEAT_PASSWORD));
  1684.  
  1685.     if(Password1[0] && !memcmp(Password1,Password2,20))
  1686.         Disabled = FALSE;
  1687.     else
  1688.         Disabled = TRUE;
  1689.  
  1690.     LT_SetAttributes(Handle,GAD_USE_NEW_PASSWORD,
  1691.         GA_Disabled,Disabled,
  1692.     TAG_DONE);
  1693. }
  1694.  
  1695. BOOL
  1696. GetWindowPassword(LayoutHandle *Handle,STRPTR Password)
  1697. {
  1698.     UBYTE    Password1[30],
  1699.             Password2[30];
  1700.  
  1701.     memset(Password1,0,sizeof(Password1));
  1702.     memset(Password2,0,sizeof(Password2));
  1703.  
  1704.     strcpy(Password1,LT_GetString(Handle,GAD_NEW_PASSWORD));
  1705.     strcpy(Password2,LT_GetString(Handle,GAD_REPEAT_PASSWORD));
  1706.  
  1707.     if(Password1[0] && !memcmp(Password1,Password2,20))
  1708.     {
  1709.         strcpy(Password,Password1);
  1710.  
  1711.         return(TRUE);
  1712.     }
  1713.     else
  1714.     {
  1715.         LONG ID;
  1716.  
  1717.         LT_SetAttributes(Handle,GAD_USE_NEW_PASSWORD,
  1718.             GA_Disabled,TRUE,
  1719.         TAG_DONE);
  1720.  
  1721.         if(!Password2[0])
  1722.             ID = GAD_REPEAT_PASSWORD;
  1723.         else
  1724.             ID = GAD_NEW_PASSWORD;
  1725.  
  1726.         LT_Activate(Handle,ID);
  1727.  
  1728.         DisplayBeep(Handle->Window->WScreen);
  1729.  
  1730.         return(FALSE);
  1731.     }
  1732. }
  1733.  
  1734. LayoutHandle *
  1735. CreatePasswordHandle(struct Window *Parent,BOOL PasswordEnabled)
  1736. {
  1737.     LayoutHandle *Handle;
  1738.  
  1739.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  1740.         LAHN_LocaleHook,    &LocaleHook,
  1741.         LAHN_AutoActivate,    TRUE,
  1742.     TAG_DONE))
  1743.     {
  1744.         LT_New(Handle,
  1745.             LA_Type,VERTICAL_KIND,
  1746.         TAG_DONE);
  1747.         {
  1748.             LT_New(Handle,
  1749.                 LA_Type,VERTICAL_KIND,
  1750.             TAG_DONE);
  1751.             {
  1752.                 LT_New(Handle,
  1753.                     LA_Type,        PASSWORD_KIND,
  1754.                     LA_LabelID,        MSG_ENTER_PASSWORD_GAD,
  1755.                     LA_ID,            GAD_NEW_PASSWORD,
  1756.                     LA_Chars,        40,
  1757.                     GTST_MaxChars,    20,
  1758.                     LAST_Activate,    TRUE,
  1759.                 TAG_DONE);
  1760.  
  1761.                 LT_New(Handle,
  1762.                     LA_Type,        PASSWORD_KIND,
  1763.                     LA_LabelID,        MSG_REPEAT_PASSWORD_GAD,
  1764.                     LA_ID,            GAD_REPEAT_PASSWORD,
  1765.                     GTST_MaxChars,    20,
  1766.                     LAST_LastGadget,TRUE,
  1767.                 TAG_DONE);
  1768.  
  1769.                 LT_EndGroup(Handle);
  1770.             }
  1771.  
  1772.             LT_New(Handle,
  1773.                 LA_Type,HORIZONTAL_KIND,
  1774.             TAG_DONE);
  1775.             {
  1776.                 LT_New(Handle,
  1777.                     LA_Type,        XBAR_KIND,
  1778.                     LAXB_FullWidth,    TRUE,
  1779.                 TAG_DONE);
  1780.  
  1781.                 LT_EndGroup(Handle);
  1782.             }
  1783.  
  1784.             LT_New(Handle,
  1785.                 LA_Type,        HORIZONTAL_KIND,
  1786.                 LAGR_SameSize,    TRUE,
  1787.                 LAGR_Spread,    TRUE,
  1788.             TAG_DONE);
  1789.             {
  1790.                 LT_New(Handle,
  1791.                     LA_Type,        BUTTON_KIND,
  1792.                     LA_LabelID,        MSG_USE_NEWPASSWORD_GAD,
  1793.                     LA_ID,            GAD_USE_NEW_PASSWORD,
  1794.                     GA_Disabled,    TRUE,
  1795.                     LABT_ExtraFat,    TRUE,
  1796.                     LABT_ReturnKey,    TRUE,
  1797.                 TAG_DONE);
  1798.  
  1799.                 if(PasswordEnabled)
  1800.                 {
  1801.                     LT_New(Handle,
  1802.                         LA_Type,        BUTTON_KIND,
  1803.                         LA_LabelID,        MSG_CLEAR_PASSWORD_GAD,
  1804.                         LA_ID,            GAD_CLEAR_PASSWORD,
  1805.                         LABT_ExtraFat,    TRUE,
  1806.                     TAG_DONE);
  1807.                 }
  1808.  
  1809.                 LT_New(Handle,
  1810.                     LA_Type,        BUTTON_KIND,
  1811.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  1812.                     LA_ID,            GAD_CANCEL_PASSWORD,
  1813.                     LABT_EscKey,    TRUE,
  1814.                 TAG_DONE);
  1815.  
  1816.                 LT_EndGroup(Handle);
  1817.             }
  1818.  
  1819.             LT_EndGroup(Handle);
  1820.         }
  1821.  
  1822.         if(LT_Build(Handle,
  1823.             LAWN_TitleID,        MSG_ENTER_PASSWORD_TXT,
  1824.             LAWN_IDCMP,         IDCMP_CLOSEWINDOW,
  1825.             LAWN_HelpHook,        &GuideHook,
  1826.             LAWN_Show,            TRUE,
  1827.             LAWN_Parent,        Parent,
  1828.             LAWN_UserPort,        Parent->UserPort,
  1829.             WA_DepthGadget,        TRUE,
  1830.             WA_DragBar,            TRUE,
  1831.             WA_RMBTrap,         TRUE,
  1832.             WA_Activate,        TRUE,
  1833.             WA_CloseGadget,     TRUE,
  1834.             WA_SimpleRefresh,    TRUE,
  1835.         TAG_DONE))
  1836.             return(Handle);
  1837.         else
  1838.             LT_DeleteHandle(Handle);
  1839.     }
  1840.  
  1841.     return(NULL);
  1842. }
  1843.